// Copyright (c) 2010-2014 SharpDX - Alexandre Mutel
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.

//------------------------------------------------------------------------------
// <auto-generated>
//     Types declaration for SharpDX.DirectSound namespace.
//     This code was generated by a tool.
//     Date : 28/03/2015 21:51:09
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Security;
namespace SharpDX.DirectSound {

#pragma warning disable 282
#pragma warning disable 649
#pragma warning disable 419
#pragma warning disable 1587
#pragma warning disable 1574
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.AcousticEchoCancelSettings"/> structure contains parameters for acoustic echo cancellation in a capture buffer.	
    /// </summary>	
    /// <remarks>	
    /// <p>The dwMode member is ignored when this structure is passed to IDirectSoundCaptureFXAec8::SetAllParameters.</p> <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCFXAec']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>	
    /// <unmanaged>DSCFXAec</unmanaged>	
    /// <unmanaged-short>DSCFXAec</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct AcousticEchoCancelSettings {	
        
        /// <summary>	
        /// <dd> Boolean value that specifies whether the effect is enabled. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCFXAec::fEnable']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>	
        /// <unmanaged>BOOL fEnable</unmanaged>	
        /// <unmanaged-short>BOOL fEnable</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawBool Enable;
        
        /// <summary>	
        /// <dd> Boolean value that specifies whether to enable background comfort noise, which makes the capture signal sound more natural by preventing periods of dead silence. By default, background comfort noise is not enabled. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCFXAec::fNoiseFill']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>	
        /// <unmanaged>BOOL fNoiseFill</unmanaged>	
        /// <unmanaged-short>BOOL fNoiseFill</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawBool NoiseFill;
        
        /// <summary>	
        /// <dd> Operation mode. This member contains one of the following values. <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.AcousticEchoCancelMode.PassThrough"/>	
        /// </td><td>The effect is passing capture and render data through without modifying it.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.AcousticEchoCancelMode.HalfDuplex"/>	
        /// </td><td>The effect is running in half duplex mode. Not presently supported.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.AcousticEchoCancelMode.FullDuplex"/>	
        /// </td><td>The effect is running in full duplex mode.	
        /// </td></tr> </table> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCFXAec::dwMode']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscfxaec</msdn-id>	
        /// <unmanaged>DSCFX_AEC_MODE dwMode</unmanaged>	
        /// <unmanaged-short>DSCFX_AEC_MODE dwMode</unmanaged-short>	
        public SharpDX.DirectSound.AcousticEchoCancelMode Mode;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.Buffer3DSettings"/> structure contains all information necessary to uniquely describe the location, orientation, and motion of a 3D sound buffer. This structure is used with theIDirectSound3DBuffer8::GetAllParametersandIDirectSound3DBuffer8::SetAllParametersmethods.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
    /// <unmanaged>DS3DBUFFER</unmanaged>	
    /// <unmanaged-short>DS3DBUFFER</unmanaged-short>	
    public  partial class Buffer3DSettings {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::vPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>D3DVECTOR vPosition</unmanaged>	
        /// <unmanaged-short>D3DVECTOR vPosition</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawVector3 Position;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::vVelocity']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>D3DVECTOR vVelocity</unmanaged>	
        /// <unmanaged-short>D3DVECTOR vVelocity</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawVector3 Velocity;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::dwInsideConeAngle']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>unsigned int dwInsideConeAngle</unmanaged>	
        /// <unmanaged-short>unsigned int dwInsideConeAngle</unmanaged-short>	
        public int InsideConeAngle;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::dwOutsideConeAngle']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>unsigned int dwOutsideConeAngle</unmanaged>	
        /// <unmanaged-short>unsigned int dwOutsideConeAngle</unmanaged-short>	
        public int OutsideConeAngle;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::vConeOrientation']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>D3DVECTOR vConeOrientation</unmanaged>	
        /// <unmanaged-short>D3DVECTOR vConeOrientation</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawVector3 ConeOrientation;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::lConeOutsideVolume']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>int lConeOutsideVolume</unmanaged>	
        /// <unmanaged-short>int lConeOutsideVolume</unmanaged-short>	
        public int ConeOutsideVolume;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::flMinDistance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>float flMinDistance</unmanaged>	
        /// <unmanaged-short>float flMinDistance</unmanaged-short>	
        public float MinDistance;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::flMaxDistance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>float flMaxDistance</unmanaged>	
        /// <unmanaged-short>float flMaxDistance</unmanaged-short>	
        public float MaxDistance;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DBUFFER::dwMode']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dbuffer</msdn-id>	
        /// <unmanaged>unsigned int dwMode</unmanaged>	
        /// <unmanaged-short>unsigned int dwMode</unmanaged-short>	
        public int Mode;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public SharpDX.Mathematics.Interop.RawVector3 Position;
            public SharpDX.Mathematics.Interop.RawVector3 Velocity;
            public int InsideConeAngle;
            public int OutsideConeAngle;
            public SharpDX.Mathematics.Interop.RawVector3 ConeOrientation;
            public int ConeOutsideVolume;
            public float MinDistance;
            public float MaxDistance;
            public int Mode;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Position = @ref.Position;
            this.Velocity = @ref.Velocity;
            this.InsideConeAngle = @ref.InsideConeAngle;
            this.OutsideConeAngle = @ref.OutsideConeAngle;
            this.ConeOrientation = @ref.ConeOrientation;
            this.ConeOutsideVolume = @ref.ConeOutsideVolume;
            this.MinDistance = @ref.MinDistance;
            this.MaxDistance = @ref.MaxDistance;
            this.Mode = @ref.Mode;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Position = this.Position;
            @ref.Velocity = this.Velocity;
            @ref.InsideConeAngle = this.InsideConeAngle;
            @ref.OutsideConeAngle = this.OutsideConeAngle;
            @ref.ConeOrientation = this.ConeOrientation;
            @ref.ConeOutsideVolume = this.ConeOutsideVolume;
            @ref.MinDistance = this.MinDistance;
            @ref.MaxDistance = this.MaxDistance;
            @ref.Mode = this.Mode;
		
		}
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBCAPS']/*"/>	
    /// <unmanaged>DSBCAPS</unmanaged>	
    /// <unmanaged-short>DSBCAPS</unmanaged-short>	
    public  partial class BufferCapabilities {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBCAPS::dwSize']/*"/>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBCAPS::dwFlags']/*"/>	
        /// <unmanaged>DSBCAPS_FLAGS dwFlags</unmanaged>	
        /// <unmanaged-short>DSBCAPS_FLAGS dwFlags</unmanaged-short>	
        public SharpDX.DirectSound.BufferFlags Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBCAPS::dwBufferBytes']/*"/>	
        /// <unmanaged>unsigned int dwBufferBytes</unmanaged>	
        /// <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>	
        public int BufferBytes;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBCAPS::dwUnlockTransferRate']/*"/>	
        /// <unmanaged>unsigned int dwUnlockTransferRate</unmanaged>	
        /// <unmanaged-short>unsigned int dwUnlockTransferRate</unmanaged-short>	
        public int UnlockTransferRate;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBCAPS::dwPlayCpuOverhead']/*"/>	
        /// <unmanaged>unsigned int dwPlayCpuOverhead</unmanaged>	
        /// <unmanaged-short>unsigned int dwPlayCpuOverhead</unmanaged-short>	
        public int PlayCpuOverhead;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public SharpDX.DirectSound.BufferFlags Flags;
            public int BufferBytes;
            public int UnlockTransferRate;
            public int PlayCpuOverhead;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Flags = @ref.Flags;
            this.BufferBytes = @ref.BufferBytes;
            this.UnlockTransferRate = @ref.UnlockTransferRate;
            this.PlayCpuOverhead = @ref.PlayCpuOverhead;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Flags = this.Flags;
            @ref.BufferBytes = this.BufferBytes;
            @ref.UnlockTransferRate = this.UnlockTransferRate;
            @ref.PlayCpuOverhead = this.PlayCpuOverhead;
		
		}
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.Capabilities"/> structure describes the capabilities of a device. It is used by theIDirectSound8::GetCapsmethod.	
    /// </summary>	
    /// <remarks>	
    /// <p>Some audio cards may be unable to report accurately the number of available or free hardware buffers. This can happen, for example, when the card can play more sounds at lower sampling rates than at higher rates. In general, a nonzero value in any of the members relating to number of free hardware buffers signifies that at least one hardware resource of the appropriate type is available.</p> <p>The unlock transfer rate for software buffers is 0, because the data need not be transferred anywhere. Similarly, the play processing overhead for hardware buffers is 0 because the mixing is done by the sound device.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
    /// <unmanaged>DSCAPS</unmanaged>	
    /// <unmanaged-short>DSCAPS</unmanaged-short>	
    public  partial class Capabilities {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>DSCAPS_FLAGS dwFlags</unmanaged>	
        /// <unmanaged-short>DSCAPS_FLAGS dwFlags</unmanaged-short>	
        public SharpDX.DirectSound.CapabilitiesFlags Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMinSecondarySampleRate']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMinSecondarySampleRate</unmanaged>	
        /// <unmanaged-short>unsigned int dwMinSecondarySampleRate</unmanaged-short>	
        public int MinSecondarySampleRate;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxSecondarySampleRate']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxSecondarySampleRate</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxSecondarySampleRate</unmanaged-short>	
        public int MaxSecondarySampleRate;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwPrimaryBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwPrimaryBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwPrimaryBuffers</unmanaged-short>	
        public int PrimaryBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxHwMixingAllBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxHwMixingAllBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxHwMixingAllBuffers</unmanaged-short>	
        public int MaxHardwareMixingAllBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxHwMixingStaticBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxHwMixingStaticBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxHwMixingStaticBuffers</unmanaged-short>	
        public int MaxHardwareMixingStaticBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxHwMixingStreamingBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxHwMixingStreamingBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxHwMixingStreamingBuffers</unmanaged-short>	
        public int MaxHardwareMixingStreamingBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFreeHwMixingAllBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwFreeHwMixingAllBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwFreeHwMixingAllBuffers</unmanaged-short>	
        public int FreeHardwareMixingAllBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFreeHwMixingStaticBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwFreeHwMixingStaticBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwFreeHwMixingStaticBuffers</unmanaged-short>	
        public int FreeHardwareMixingStaticBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFreeHwMixingStreamingBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwFreeHwMixingStreamingBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwFreeHwMixingStreamingBuffers</unmanaged-short>	
        public int FreeHardwareMixingStreamingBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxHw3DAllBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxHw3DAllBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxHw3DAllBuffers</unmanaged-short>	
        public int MaxHardware3DAllBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxHw3DStaticBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxHw3DStaticBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxHw3DStaticBuffers</unmanaged-short>	
        public int MaxHardware3DStaticBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxHw3DStreamingBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxHw3DStreamingBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxHw3DStreamingBuffers</unmanaged-short>	
        public int MaxHardware3DStreamingBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFreeHw3DAllBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwFreeHw3DAllBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwFreeHw3DAllBuffers</unmanaged-short>	
        public int FreeHardware3DAllBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFreeHw3DStaticBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwFreeHw3DStaticBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwFreeHw3DStaticBuffers</unmanaged-short>	
        public int FreeHardware3DStaticBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFreeHw3DStreamingBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwFreeHw3DStreamingBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwFreeHw3DStreamingBuffers</unmanaged-short>	
        public int FreeHardware3DStreamingBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwTotalHwMemBytes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwTotalHwMemBytes</unmanaged>	
        /// <unmanaged-short>unsigned int dwTotalHwMemBytes</unmanaged-short>	
        public int TotalHardwareMemBytes;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwFreeHwMemBytes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwFreeHwMemBytes</unmanaged>	
        /// <unmanaged-short>unsigned int dwFreeHwMemBytes</unmanaged-short>	
        public int FreeHardwareMemBytes;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwMaxContigFreeHwMemBytes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwMaxContigFreeHwMemBytes</unmanaged>	
        /// <unmanaged-short>unsigned int dwMaxContigFreeHwMemBytes</unmanaged-short>	
        public int MaxContigFreeHardwareMemBytes;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwUnlockTransferRateHwBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwUnlockTransferRateHwBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwUnlockTransferRateHwBuffers</unmanaged-short>	
        public int UnlockTransferRateHardwareBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwPlayCpuOverheadSwBuffers']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwPlayCpuOverheadSwBuffers</unmanaged>	
        /// <unmanaged-short>unsigned int dwPlayCpuOverheadSwBuffers</unmanaged-short>	
        public int PlayCpuOverheadSwBuffers;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwReserved1']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwReserved1</unmanaged>	
        /// <unmanaged-short>unsigned int dwReserved1</unmanaged-short>	
        internal int Reserved1;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCAPS::dwReserved2']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscaps</msdn-id>	
        /// <unmanaged>unsigned int dwReserved2</unmanaged>	
        /// <unmanaged-short>unsigned int dwReserved2</unmanaged-short>	
        internal int Reserved2;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public SharpDX.DirectSound.CapabilitiesFlags Flags;
            public int MinSecondarySampleRate;
            public int MaxSecondarySampleRate;
            public int PrimaryBuffers;
            public int MaxHardwareMixingAllBuffers;
            public int MaxHardwareMixingStaticBuffers;
            public int MaxHardwareMixingStreamingBuffers;
            public int FreeHardwareMixingAllBuffers;
            public int FreeHardwareMixingStaticBuffers;
            public int FreeHardwareMixingStreamingBuffers;
            public int MaxHardware3DAllBuffers;
            public int MaxHardware3DStaticBuffers;
            public int MaxHardware3DStreamingBuffers;
            public int FreeHardware3DAllBuffers;
            public int FreeHardware3DStaticBuffers;
            public int FreeHardware3DStreamingBuffers;
            public int TotalHardwareMemBytes;
            public int FreeHardwareMemBytes;
            public int MaxContigFreeHardwareMemBytes;
            public int UnlockTransferRateHardwareBuffers;
            public int PlayCpuOverheadSwBuffers;
            public int Reserved1;
            public int Reserved2;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Flags = @ref.Flags;
            this.MinSecondarySampleRate = @ref.MinSecondarySampleRate;
            this.MaxSecondarySampleRate = @ref.MaxSecondarySampleRate;
            this.PrimaryBuffers = @ref.PrimaryBuffers;
            this.MaxHardwareMixingAllBuffers = @ref.MaxHardwareMixingAllBuffers;
            this.MaxHardwareMixingStaticBuffers = @ref.MaxHardwareMixingStaticBuffers;
            this.MaxHardwareMixingStreamingBuffers = @ref.MaxHardwareMixingStreamingBuffers;
            this.FreeHardwareMixingAllBuffers = @ref.FreeHardwareMixingAllBuffers;
            this.FreeHardwareMixingStaticBuffers = @ref.FreeHardwareMixingStaticBuffers;
            this.FreeHardwareMixingStreamingBuffers = @ref.FreeHardwareMixingStreamingBuffers;
            this.MaxHardware3DAllBuffers = @ref.MaxHardware3DAllBuffers;
            this.MaxHardware3DStaticBuffers = @ref.MaxHardware3DStaticBuffers;
            this.MaxHardware3DStreamingBuffers = @ref.MaxHardware3DStreamingBuffers;
            this.FreeHardware3DAllBuffers = @ref.FreeHardware3DAllBuffers;
            this.FreeHardware3DStaticBuffers = @ref.FreeHardware3DStaticBuffers;
            this.FreeHardware3DStreamingBuffers = @ref.FreeHardware3DStreamingBuffers;
            this.TotalHardwareMemBytes = @ref.TotalHardwareMemBytes;
            this.FreeHardwareMemBytes = @ref.FreeHardwareMemBytes;
            this.MaxContigFreeHardwareMemBytes = @ref.MaxContigFreeHardwareMemBytes;
            this.UnlockTransferRateHardwareBuffers = @ref.UnlockTransferRateHardwareBuffers;
            this.PlayCpuOverheadSwBuffers = @ref.PlayCpuOverheadSwBuffers;
            this.Reserved1 = @ref.Reserved1;
            this.Reserved2 = @ref.Reserved2;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Flags = this.Flags;
            @ref.MinSecondarySampleRate = this.MinSecondarySampleRate;
            @ref.MaxSecondarySampleRate = this.MaxSecondarySampleRate;
            @ref.PrimaryBuffers = this.PrimaryBuffers;
            @ref.MaxHardwareMixingAllBuffers = this.MaxHardwareMixingAllBuffers;
            @ref.MaxHardwareMixingStaticBuffers = this.MaxHardwareMixingStaticBuffers;
            @ref.MaxHardwareMixingStreamingBuffers = this.MaxHardwareMixingStreamingBuffers;
            @ref.FreeHardwareMixingAllBuffers = this.FreeHardwareMixingAllBuffers;
            @ref.FreeHardwareMixingStaticBuffers = this.FreeHardwareMixingStaticBuffers;
            @ref.FreeHardwareMixingStreamingBuffers = this.FreeHardwareMixingStreamingBuffers;
            @ref.MaxHardware3DAllBuffers = this.MaxHardware3DAllBuffers;
            @ref.MaxHardware3DStaticBuffers = this.MaxHardware3DStaticBuffers;
            @ref.MaxHardware3DStreamingBuffers = this.MaxHardware3DStreamingBuffers;
            @ref.FreeHardware3DAllBuffers = this.FreeHardware3DAllBuffers;
            @ref.FreeHardware3DStaticBuffers = this.FreeHardware3DStaticBuffers;
            @ref.FreeHardware3DStreamingBuffers = this.FreeHardware3DStreamingBuffers;
            @ref.TotalHardwareMemBytes = this.TotalHardwareMemBytes;
            @ref.FreeHardwareMemBytes = this.FreeHardwareMemBytes;
            @ref.MaxContigFreeHardwareMemBytes = this.MaxContigFreeHardwareMemBytes;
            @ref.UnlockTransferRateHardwareBuffers = this.UnlockTransferRateHardwareBuffers;
            @ref.PlayCpuOverheadSwBuffers = this.PlayCpuOverheadSwBuffers;
            @ref.Reserved1 = this.Reserved1;
            @ref.Reserved2 = this.Reserved2;
		
		}
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.CaptureBufferCapabilities"/> structure describes the capabilities of a capture buffer. It is used by theIDirectSoundCaptureBuffer8::GetCapsmethod.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBCAPS']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dscbcaps</msdn-id>	
    /// <unmanaged>DSCBCAPS</unmanaged>	
    /// <unmanaged-short>DSCBCAPS</unmanaged-short>	
    public  partial class CaptureBufferCapabilities {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBCAPS::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbcaps</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBCAPS::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbcaps</msdn-id>	
        /// <unmanaged>DSCBCAPS_FLAGS dwFlags</unmanaged>	
        /// <unmanaged-short>DSCBCAPS_FLAGS dwFlags</unmanaged-short>	
        public SharpDX.DirectSound.CaptureBufferCapabilitiesFlags Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBCAPS::dwBufferBytes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbcaps</msdn-id>	
        /// <unmanaged>unsigned int dwBufferBytes</unmanaged>	
        /// <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>	
        public int BufferBytes;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBCAPS::dwReserved']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbcaps</msdn-id>	
        /// <unmanaged>unsigned int dwReserved</unmanaged>	
        /// <unmanaged-short>unsigned int dwReserved</unmanaged-short>	
        internal int Reserved;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public SharpDX.DirectSound.CaptureBufferCapabilitiesFlags Flags;
            public int BufferBytes;
            public int Reserved;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Flags = @ref.Flags;
            this.BufferBytes = @ref.BufferBytes;
            this.Reserved = @ref.Reserved;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Flags = this.Flags;
            @ref.BufferBytes = this.BufferBytes;
            @ref.Reserved = this.Reserved;
		
		}
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.CaptureBufferDescription"/> structure describes a capture buffer. It is used by theIDirectSoundCapture8::CreateCaptureBuffermethod and by theDirectSoundFullDuplexCreate8function.<p>An earlier version of this structure, DSCBUFFERDESC1, is maintained in Dsound.h for compatibility with DirectX 7 and earlier.</p>	
    /// </summary>	
    /// <remarks>	
    /// <p>The <see cref="SharpDX.DirectSound.CaptureBufferCapabilitiesFlags.ControlEffects"/> flag is supported only on buffers created by an object of class CLSID_DirectSoundCapture8. If the IDirectSoundCapture8 interface was obtained from the DirectSoundCaptureCreate8 function, this flag is supported; if it was obtained from the earlier DirectSoundCaptureCreate function, it is not supported.</p> <p>Capture effects require Microsoft Windows XP.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
    /// <unmanaged>DSCBUFFERDESC</unmanaged>	
    /// <unmanaged-short>DSCBUFFERDESC</unmanaged-short>	
    public  partial class CaptureBufferDescription {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
        /// <unmanaged>DSCBCAPS_FLAGS dwFlags</unmanaged>	
        /// <unmanaged-short>DSCBCAPS_FLAGS dwFlags</unmanaged-short>	
        public SharpDX.DirectSound.CaptureBufferCapabilitiesFlags Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC::dwBufferBytes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
        /// <unmanaged>unsigned int dwBufferBytes</unmanaged>	
        /// <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>	
        public int BufferBytes;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC::dwReserved']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
        /// <unmanaged>unsigned int dwReserved</unmanaged>	
        /// <unmanaged-short>unsigned int dwReserved</unmanaged-short>	
        internal int Reserved;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC::lpwfxFormat']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
        /// <unmanaged>WAVEFORMATEX* lpwfxFormat</unmanaged>	
        /// <unmanaged-short>WAVEFORMATEX lpwfxFormat</unmanaged-short>	
        internal System.IntPtr FormatPointer;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC::dwFXCount']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
        /// <unmanaged>unsigned int dwFXCount</unmanaged>	
        /// <unmanaged-short>unsigned int dwFXCount</unmanaged-short>	
        internal int EffectCount;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCBUFFERDESC::lpDSCFXDesc']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscbufferdesc</msdn-id>	
        /// <unmanaged>DSCEFFECTDESC* lpDSCFXDesc</unmanaged>	
        /// <unmanaged-short>DSCEFFECTDESC lpDSCFXDesc</unmanaged-short>	
        internal System.IntPtr EffectDescriptionPointer;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.CaptureCapabilities"/> structure describes the capabilities of the capture device. It is used by theIDirectSoundCapture8::GetCapsmethod.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCCAPS']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsccaps</msdn-id>	
    /// <unmanaged>DSCCAPS</unmanaged>	
    /// <unmanaged-short>DSCCAPS</unmanaged-short>	
    public  partial class CaptureCapabilities {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCCAPS::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsccaps</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCCAPS::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsccaps</msdn-id>	
        /// <unmanaged>unsigned int dwFlags</unmanaged>	
        /// <unmanaged-short>unsigned int dwFlags</unmanaged-short>	
        public int Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCCAPS::dwFormats']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsccaps</msdn-id>	
        /// <unmanaged>unsigned int dwFormats</unmanaged>	
        /// <unmanaged-short>unsigned int dwFormats</unmanaged-short>	
        public int Formats;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCCAPS::dwChannels']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsccaps</msdn-id>	
        /// <unmanaged>unsigned int dwChannels</unmanaged>	
        /// <unmanaged-short>unsigned int dwChannels</unmanaged-short>	
        public int Channels;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public int Flags;
            public int Formats;
            public int Channels;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Flags = @ref.Flags;
            this.Formats = @ref.Formats;
            this.Channels = @ref.Channels;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Flags = this.Flags;
            @ref.Formats = this.Formats;
            @ref.Channels = this.Channels;
		
		}
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.CaptureEffectDescription"/> structure contains parameters for an effect associated with a capture buffer.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCEFFECTDESC']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>	
    /// <unmanaged>DSCEFFECTDESC</unmanaged>	
    /// <unmanaged-short>DSCEFFECTDESC</unmanaged-short>	
    public  partial class CaptureEffectDescription {	
        
        /// <summary>	
        /// <dd> Size of the structure, in bytes. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCEFFECTDESC::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// <dd> Flags that specify desired parameters of the effect. When this structure is passed to DirectSoundFullDuplexCreate8, or IDirectSoundCapture8::CreateCaptureBuffer, this member must be one of the values shown in the following table.	
        /// <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectResult.LocatedInHardware"/>	
        /// </td><td>Effect specified by guidDSCFXInstance must be in hardware.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectResult.LocatedInSoftware"/>	
        /// </td><td>Effect specified by guidDSCFXInstance must be in software.	
        /// </td></tr> </table> <p>On return, this member can contain one of the values shown in the following table.</p> <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectResult.LocatedInHardware"/>	
        /// </td><td>Effect was created in hardware.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectResult.LocatedInSoftware"/>	
        /// </td><td>Effect was created in software.	
        /// </td></tr> </table> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCEFFECTDESC::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>	
        /// <unmanaged>DSCFX_ENUM dwFlags</unmanaged>	
        /// <unmanaged-short>DSCFX_ENUM dwFlags</unmanaged-short>	
        public SharpDX.DirectSound.CaptureEffectResult Flags;
        
        /// <summary>	
        /// <dd> Value of type <see cref="System.Guid"/> that specifies the class identifier of the effect. The following standard identifiers are defined.	
        /// <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectGuid.AcousticEchoCancellationCaptureEffect"/>	
        /// </td><td>Acoustic echo cancellation.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectGuid.NoiseSuppressionCaptureEffect"/>	
        /// </td><td>Noise suppression.	
        /// </td></tr> </table> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCEFFECTDESC::guidDSCFXClass']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>	
        /// <unmanaged>GUID guidDSCFXClass</unmanaged>	
        /// <unmanaged-short>GUID guidDSCFXClass</unmanaged-short>	
        public System.Guid CaptureEffectClass;
        
        /// <summary>	
        /// <dd> Value of type <see cref="System.Guid"/> that specifies the unique identifier of the preferred effect. The following standard identifiers are defined.	
        /// <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectGuid.MicrosoftAcousticEchoCancellationCaptureEffect"/>	
        /// </td><td>Microsoft acoustic echo cancellation. Available in software only.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectGuid.MicrosoftNoiseSuppressionCaptureEffect"/>	
        /// </td><td>Microsoft noise suppression. Available in software only.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectGuid.SystemAcousticEchoCancellationCaptureEffect"/>	
        /// </td><td>System default acoustic echo cancellation.	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.CaptureEffectGuid.SystemNoiseSuppressionCaptureEffect"/>	
        /// </td><td>System default noise suppression.	
        /// </td></tr> </table> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCEFFECTDESC::guidDSCFXInstance']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>	
        /// <unmanaged>GUID guidDSCFXInstance</unmanaged>	
        /// <unmanaged-short>GUID guidDSCFXInstance</unmanaged-short>	
        public System.Guid CaptureEffectInstance;
        
        /// <summary>	
        /// <dd> Reserved. Must be zero. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCEFFECTDESC::dwReserved1']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>	
        /// <unmanaged>unsigned int dwReserved1</unmanaged>	
        /// <unmanaged-short>unsigned int dwReserved1</unmanaged-short>	
        internal int Reserved1;
        
        /// <summary>	
        /// <dd> Reserved. Must be zero. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCEFFECTDESC::dwReserved2']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsceffectdesc</msdn-id>	
        /// <unmanaged>unsigned int dwReserved2</unmanaged>	
        /// <unmanaged-short>unsigned int dwReserved2</unmanaged-short>	
        internal int Reserved2;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public SharpDX.DirectSound.CaptureEffectResult Flags;
            public System.Guid CaptureEffectClass;
            public System.Guid CaptureEffectInstance;
            public int Reserved1;
            public int Reserved2;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Flags = @ref.Flags;
            this.CaptureEffectClass = @ref.CaptureEffectClass;
            this.CaptureEffectInstance = @ref.CaptureEffectInstance;
            this.Reserved1 = @ref.Reserved1;
            this.Reserved2 = @ref.Reserved2;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Flags = this.Flags;
            @ref.CaptureEffectClass = this.CaptureEffectClass;
            @ref.CaptureEffectInstance = this.CaptureEffectInstance;
            @ref.Reserved1 = this.Reserved1;
            @ref.Reserved2 = this.Reserved2;
		
		}
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.ChorusSettings"/> structure contains parameters for a chorus effect.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
    /// <unmanaged>DSFXChorus</unmanaged>	
    /// <unmanaged-short>DSFXChorus</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct ChorusSettings {	
        
        /// <summary>	
        /// <dd> Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from DSFXCHORUS_WETDRYMIX_MIN through DSFXCHORUS_WETDRYMIX_MAX (all wet). The default value is 50. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus::fWetDryMix']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
        /// <unmanaged>float fWetDryMix</unmanaged>	
        /// <unmanaged-short>float fWetDryMix</unmanaged-short>	
        public float WetDryMix;
        
        /// <summary>	
        /// <dd> Percentage by which the delay time is modulated by the low-frequency oscillator, in hundredths of a percentage point. Must be in the range from DSFXCHORUS_DEPTH_MIN through DSFXCHORUS_DEPTH_MAX. The default value is 10. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus::fDepth']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
        /// <unmanaged>float fDepth</unmanaged>	
        /// <unmanaged-short>float fDepth</unmanaged-short>	
        public float Depth;
        
        /// <summary>	
        /// <dd> Percentage of output signal to feed back into the effect's input, in the range from DSFXCHORUS_FEEDBACK_MIN to DSFXCHORUS_FEEDBACK_MAX. The default value is 25. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus::fFeedback']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
        /// <unmanaged>float fFeedback</unmanaged>	
        /// <unmanaged-short>float fFeedback</unmanaged-short>	
        public float Feedback;
        
        /// <summary>	
        /// <dd> Frequency of the LFO, in the range from DSFXCHORUS_FREQUENCY_MIN to DSFXCHORUS_FREQUENCY_MAX. The default value is 1.1. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus::fFrequency']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
        /// <unmanaged>float fFrequency</unmanaged>	
        /// <unmanaged-short>float fFrequency</unmanaged-short>	
        public float Frequency;
        
        /// <summary>	
        /// <dd> Waveform shape of the LFO. Defined values are DSFXCHORUS_WAVE_TRIANGLE and DSFXCHORUS_WAVE_SIN. By default, the waveform is a sine.  </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus::lWaveform']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
        /// <unmanaged>int lWaveform</unmanaged>	
        /// <unmanaged-short>int lWaveform</unmanaged-short>	
        public int Waveform;
        
        /// <summary>	
        /// <dd> Number of milliseconds the input is delayed before it is played back, in the range from DSFXCHORUS_DELAY_MIN to DSFXCHORUS_DELAY_MAX. The default value is 16 ms. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus::fDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
        /// <unmanaged>float fDelay</unmanaged>	
        /// <unmanaged-short>float fDelay</unmanaged-short>	
        public float Delay;
        
        /// <summary>	
        /// <dd> Phase differential between left and right LFOs, in the range from DSFXCHORUS_PHASE_MIN through DSFXCHORUS_PHASE_MAX. Possible values are defined as follows.	
        /// <table> <tr><th>Value	
        /// </th></tr> <tr><td>DSFXCHORUS_PHASE_NEG_180	
        /// </td></tr> <tr><td>DSFXCHORUS_PHASE_NEG_90	
        /// </td></tr> <tr><td>DSFXCHORUS_PHASE_ZERO	
        /// </td></tr> <tr><td>DSFXCHORUS_PHASE_90	
        /// </td></tr> <tr><td>DSFXCHORUS_PHASE_180	
        /// </td></tr> </table> <p>The default value is DSFXCHORUS_PHASE_90.</p> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXChorus::lPhase']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxchorus</msdn-id>	
        /// <unmanaged>int lPhase</unmanaged>	
        /// <unmanaged-short>int lPhase</unmanaged-short>	
        public int Phase;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.CompressorSettings"/> structure contains parameters for a compression effect.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXCompressor']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxcompressor</msdn-id>	
    /// <unmanaged>DSFXCompressor</unmanaged>	
    /// <unmanaged-short>DSFXCompressor</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct CompressorSettings {	
        
        /// <summary>	
        /// <dd> Output gain of signal after compression, in the range from DSFXCOMPRESSOR_GAIN_MIN to DSFXCOMPRESSOR_GAIN_MAX. The default value is 0 dB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXCompressor::fGain']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxcompressor</msdn-id>	
        /// <unmanaged>float fGain</unmanaged>	
        /// <unmanaged-short>float fGain</unmanaged-short>	
        public float Gain;
        
        /// <summary>	
        /// <dd> Time before compression reaches its full value, in the range from DSFXCOMPRESSOR_ATTACK_MIN to DSFXCOMPRESSOR_ATTACK_MAX. The default value is 10 ms. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXCompressor::fAttack']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxcompressor</msdn-id>	
        /// <unmanaged>float fAttack</unmanaged>	
        /// <unmanaged-short>float fAttack</unmanaged-short>	
        public float Attack;
        
        /// <summary>	
        /// <dd> Speed at which compression is stopped after input drops below fThreshold, in the range from DSFXCOMPRESSOR_RELEASE_MIN to DSFXCOMPRESSOR_RELEASE_MAX. The default value is 200 ms. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXCompressor::fRelease']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxcompressor</msdn-id>	
        /// <unmanaged>float fRelease</unmanaged>	
        /// <unmanaged-short>float fRelease</unmanaged-short>	
        public float Release;
        
        /// <summary>	
        /// <dd> Point at which compression begins, in decibels, in the range from DSFXCOMPRESSOR_THRESHOLD_MIN to DSFXCOMPRESSOR_THRESHOLD_MAX. The default value is -20 dB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXCompressor::fThreshold']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxcompressor</msdn-id>	
        /// <unmanaged>float fThreshold</unmanaged>	
        /// <unmanaged-short>float fThreshold</unmanaged-short>	
        public float Threshold;
        
        /// <summary>	
        /// <dd> Compression ratio, in the range from DSFXCOMPRESSOR_RATIO_MIN to DSFXCOMPRESSOR_RATIO_MAX. The default value is 3, which means 3:1 compression. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXCompressor::fRatio']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxcompressor</msdn-id>	
        /// <unmanaged>float fRatio</unmanaged>	
        /// <unmanaged-short>float fRatio</unmanaged-short>	
        public float Ratio;
        
        /// <summary>	
        /// <dd> Time after lThreshold is reached before attack phase is started, in milliseconds, in the range from DSFXCOMPRESSOR_PREDELAY_MIN to DSFXCOMPRESSOR_PREDELAY_MAX. The default value is 4 ms. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXCompressor::fPredelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxcompressor</msdn-id>	
        /// <unmanaged>float fPredelay</unmanaged>	
        /// <unmanaged-short>float fPredelay</unmanaged-short>	
        public float Predelay;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.DistortionSettings"/> structure contains parameters for a distortion effect.	
    /// </summary>	
    /// <remarks>	
    /// <p>The values in fPostEQBandwidth, fPostEQCenterFrequency, and fPreLowpassCutoff cannot exceed one-third of the frequency of the buffer. If an attempt is made to set a value greater than this, but within the range of accepted values, the parameter is set to the nearest supported value and S_FALSE is returned by IDirectSoundFXDistortion8::SetAllParameters.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXDistortion']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>	
    /// <unmanaged>DSFXDistortion</unmanaged>	
    /// <unmanaged-short>DSFXDistortion</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct DistortionSettings {	
        
        /// <summary>	
        /// <dd> Amount of signal change after distortion, in the range from DSFXDISTORTION_GAIN_MIN through DSFXDISTORTION_GAIN_MAX. The default value is -18 dB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXDistortion::fGain']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>	
        /// <unmanaged>float fGain</unmanaged>	
        /// <unmanaged-short>float fGain</unmanaged-short>	
        public float Gain;
        
        /// <summary>	
        /// <dd> Percentage of distortion intensity, in the range in the range from DSFXDISTORTION_EDGE_MIN through DSFXDISTORTION_EDGE_MAX. The default value is 15 percent. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXDistortion::fEdge']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>	
        /// <unmanaged>float fEdge</unmanaged>	
        /// <unmanaged-short>float fEdge</unmanaged-short>	
        public float Edge;
        
        /// <summary>	
        /// <dd> Center frequency of harmonic content addition, in the range from DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN through DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX. The default value is 2400 Hz. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXDistortion::fPostEQCenterFrequency']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>	
        /// <unmanaged>float fPostEQCenterFrequency</unmanaged>	
        /// <unmanaged-short>float fPostEQCenterFrequency</unmanaged-short>	
        public float PostEQCenterFrequency;
        
        /// <summary>	
        /// <dd> Width of frequency band that determines range of harmonic content addition, in the range from DSFXDISTORTION_POSTEQBANDWIDTH_MIN through DSFXDISTORTION_POSTEQBANDWIDTH_MAX. The default value is 2400 Hz. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXDistortion::fPostEQBandwidth']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>	
        /// <unmanaged>float fPostEQBandwidth</unmanaged>	
        /// <unmanaged-short>float fPostEQBandwidth</unmanaged-short>	
        public float PostEQBandwidth;
        
        /// <summary>	
        /// <dd> Filter cutoff for high-frequency harmonics attenuation, in the range from DSFXDISTORTION_PRELOWPASSCUTOFF_MIN through DSFXDISTORTION_PRELOWPASSCUTOFF_MAX. The default value is 8000 Hz. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXDistortion::fPreLowpassCutoff']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxdistortion</msdn-id>	
        /// <unmanaged>float fPreLowpassCutoff</unmanaged>	
        /// <unmanaged-short>float fPreLowpassCutoff</unmanaged-short>	
        public float PreLowpassCutoff;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.EchoSettings"/> structure contains parameters for an echo effect.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXEcho']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>	
    /// <unmanaged>DSFXEcho</unmanaged>	
    /// <unmanaged-short>DSFXEcho</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct EchoSettings {	
        
        /// <summary>	
        /// <dd> Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from DSFXECHO_WETDRYMIX_MIN through DSFXECHO_WETDRYMIX_MAX (all wet). The default value is 50.  </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXEcho::fWetDryMix']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>	
        /// <unmanaged>float fWetDryMix</unmanaged>	
        /// <unmanaged-short>float fWetDryMix</unmanaged-short>	
        public float WetDryMix;
        
        /// <summary>	
        /// <dd> Percentage of output fed back into input, in the range from DSFXECHO_FEEDBACK_MIN through DSFXECHO_FEEDBACK_MAX. The default value is 50. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXEcho::fFeedback']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>	
        /// <unmanaged>float fFeedback</unmanaged>	
        /// <unmanaged-short>float fFeedback</unmanaged-short>	
        public float Feedback;
        
        /// <summary>	
        /// <dd> Delay for left channel, in milliseconds, in the range from DSFXECHO_LEFTDELAY_MIN through DSFXECHO_LEFTDELAY_MAX. The default value is 500 ms. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXEcho::fLeftDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>	
        /// <unmanaged>float fLeftDelay</unmanaged>	
        /// <unmanaged-short>float fLeftDelay</unmanaged-short>	
        public float LeftDelay;
        
        /// <summary>	
        /// <dd> Delay for right channel, in milliseconds, in the range from DSFXECHO_RIGHTDELAY_MIN through DSFXECHO_RIGHTDELAY_MAX. The default value is 500 ms. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXEcho::fRightDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>	
        /// <unmanaged>float fRightDelay</unmanaged>	
        /// <unmanaged-short>float fRightDelay</unmanaged-short>	
        public float RightDelay;
        
        /// <summary>	
        /// <dd> Value that specifies whether to swap left and right delays with each successive echo. The default value is zero, meaning no swap. Possible values are defined as DSFXECHO_PANDELAY_MIN (equivalent to <see cref="SharpDX.Result.False"/>) and DSFXECHO_PANDELAY_MAX (equivalent to TRUE). </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXEcho::lPanDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxecho</msdn-id>	
        /// <unmanaged>int lPanDelay</unmanaged>	
        /// <unmanaged-short>int lPanDelay</unmanaged-short>	
        public int PanDelay;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.FlangerSettings"/> structure contains parameters for a flange effect.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
    /// <unmanaged>DSFXFlanger</unmanaged>	
    /// <unmanaged-short>DSFXFlanger</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct FlangerSettings {	
        
        /// <summary>	
        /// <dd> Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from DSFXFLANGER_WETDRYMIX_MIN through DSFXFLANGER_WETDRYMIX_MAX (all wet). The default value is 50. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger::fWetDryMix']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
        /// <unmanaged>float fWetDryMix</unmanaged>	
        /// <unmanaged-short>float fWetDryMix</unmanaged-short>	
        public float WetDryMix;
        
        /// <summary>	
        /// <dd> Percentage by which the delay time is modulated by the low-frequency oscillator (LFO), in hundredths of a percentage point. Must be in the range from DSFXFLANGER_DEPTH_MIN through DSFXFLANGER_DEPTH_MAX. The default value is 100. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger::fDepth']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
        /// <unmanaged>float fDepth</unmanaged>	
        /// <unmanaged-short>float fDepth</unmanaged-short>	
        public float Depth;
        
        /// <summary>	
        /// <dd> Percentage of output signal to feed back into the effect's input, in the range from DSFXFLANGER_FEEDBACK_MIN to DSFXFLANGER_FEEDBACK_MAX. The default value is -50. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger::fFeedback']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
        /// <unmanaged>float fFeedback</unmanaged>	
        /// <unmanaged-short>float fFeedback</unmanaged-short>	
        public float Feedback;
        
        /// <summary>	
        /// <dd> Frequency of the LFO, in the range from DSFXFLANGER_FREQUENCY_MIN to DSFXFLANGER_FREQUENCY_MAX. The default value is 0.25. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger::fFrequency']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
        /// <unmanaged>float fFrequency</unmanaged>	
        /// <unmanaged-short>float fFrequency</unmanaged-short>	
        public float Frequency;
        
        /// <summary>	
        /// <dd> Waveform shape of the LFO. By default, the waveform is a sine. Possible values are defined in the following table.	
        /// <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td>DSFXFLANGER_WAVE_TRIANGLE	
        /// </td><td>Triangle.	
        /// </td></tr> <tr><td>DSFXFLANGER_WAVE_SIN	
        /// </td><td>Sine.	
        /// </td></tr> </table> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger::lWaveform']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
        /// <unmanaged>int lWaveform</unmanaged>	
        /// <unmanaged-short>int lWaveform</unmanaged-short>	
        public int Waveform;
        
        /// <summary>	
        /// <dd> Number of milliseconds the input is delayed before it is played back, in the range from DSFXFLANGER_DELAY_MIN to DSFXFLANGER_DELAY_MAX. The default value is 2 ms. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger::fDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
        /// <unmanaged>float fDelay</unmanaged>	
        /// <unmanaged-short>float fDelay</unmanaged-short>	
        public float Delay;
        
        /// <summary>	
        /// <dd> Phase differential between left and right LFOs, in the range from DSFXFLANGER_PHASE_MIN through DSFXFLANGER_PHASE_MAX. Possible values are defined in the following table.	
        /// <table> <tr><th>Value	
        /// </th></tr> <tr><td>DSFXFLANGER_PHASE_NEG_180	
        /// </td></tr> <tr><td>DSFXFLANGER_PHASE_NEG_90	
        /// </td></tr> <tr><td>DSFXFLANGER_PHASE_ZERO	
        /// </td></tr> <tr><td>DSFXFLANGER_PHASE_90	
        /// </td></tr> <tr><td>DSFXFLANGER_PHASE_180	
        /// </td></tr> </table> <p>The default value is DSFXFLANGER_PHASE_ZERO.</p> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXFlanger::lPhase']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxflanger</msdn-id>	
        /// <unmanaged>int lPhase</unmanaged>	
        /// <unmanaged-short>int lPhase</unmanaged-short>	
        public int Phase;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.GargleSettings"/> structure contains parameters for an amplitude modulation effect.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXGargle']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxgargle</msdn-id>	
    /// <unmanaged>DSFXGargle</unmanaged>	
    /// <unmanaged-short>DSFXGargle</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct GargleSettings {	
        
        /// <summary>	
        /// <dd> Rate of modulation, in Hertz. Must be in the range from DSFXGARGLE_RATEHZ_MIN through DSFXGARGLE_RATEHZ_MAX. The default value is 20. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXGargle::dwRateHz']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxgargle</msdn-id>	
        /// <unmanaged>unsigned int dwRateHz</unmanaged>	
        /// <unmanaged-short>unsigned int dwRateHz</unmanaged-short>	
        public int RateHz;
        
        /// <summary>	
        /// <dd> Shape of the modulation waveform. The following values are defined. <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td>DSFXGARGLE_WAVE_TRIANGLE	
        /// </td><td>Triangular waveform.	
        /// </td></tr> <tr><td>DSFXGARGLE_WAVE_SQUARE	
        /// </td><td>Square waveform.	
        /// </td></tr> </table> <p>The default value is DSFXGARGLE_WAVE_TRIANGLE.</p> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXGargle::dwWaveShape']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxgargle</msdn-id>	
        /// <unmanaged>unsigned int dwWaveShape</unmanaged>	
        /// <unmanaged-short>unsigned int dwWaveShape</unmanaged-short>	
        public int WaveShape;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.I3DL2ReverbSettings"/> structure contains parameters for an I3DL2 (Interactive 3D Audio Level 2) reverberation effect.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
    /// <unmanaged>DSFXI3DL2Reverb</unmanaged>	
    /// <unmanaged-short>DSFXI3DL2Reverb</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct I3DL2ReverbSettings {	
        
        /// <summary>	
        /// <dd> Attenuation of the room effect, in millibels (mB), in the range from DSFX_I3DL2REVERB_ROOM_MIN to DSFX_I3DL2REVERB_ROOM_MAX. The default value is DSFX_I3DL2REVERB_ROOM_DEFAULT, or -1000 mB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::lRoom']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>int lRoom</unmanaged>	
        /// <unmanaged-short>int lRoom</unmanaged-short>	
        public int Room;
        
        /// <summary>	
        /// <dd> Attenuation of the room high-frequency effect, in mB, in the range from DSFX_I3DL2REVERB_ROOMHF_MIN to DSFX_I3DL2REVERB_ROOMHF_MAX. The default value is DSFX_I3DL2REVERB_ROOMHF_DEFAULT, or -100 mB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::lRoomHF']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>int lRoomHF</unmanaged>	
        /// <unmanaged-short>int lRoomHF</unmanaged-short>	
        public int RoomHF;
        
        /// <summary>	
        /// <dd> Rolloff factor for the reflected signals, in the range from DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN to DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX. The default value is DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT, or 0.0. The rolloff factor for the direct path is controlled by the DirectSound listener. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flRoomRolloffFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flRoomRolloffFactor</unmanaged>	
        /// <unmanaged-short>float flRoomRolloffFactor</unmanaged-short>	
        public float RoomRolloffFactor;
        
        /// <summary>	
        /// <dd> Decay time, in seconds, in the range from DSFX_I3DL2REVERB_DECAYTIME_MIN to DSFX_I3DL2REVERB_DECAYTIME_MAX. The default value is DSFX_I3DL2REVERB_DECAYTIME_DEFAULT, or 1.49 second. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flDecayTime']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flDecayTime</unmanaged>	
        /// <unmanaged-short>float flDecayTime</unmanaged-short>	
        public float DecayTime;
        
        /// <summary>	
        /// <dd> Ratio of the decay time at high frequencies to the decay time at low frequencies, in the range from DSFX_I3DL2REVERB_DECAYHFRATIO_MIN to DSFX_I3DL2REVERB_DECAYHFRATIO_MAX. The default value is DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT, or 0.83. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flDecayHFRatio']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flDecayHFRatio</unmanaged>	
        /// <unmanaged-short>float flDecayHFRatio</unmanaged-short>	
        public float DecayHFRatio;
        
        /// <summary>	
        /// <dd> Attenuation of early reflections relative to lRoom, in mB, in the range from DSFX_I3DL2REVERB_REFLECTIONS_MIN to DSFX_I3DL2REVERB_REFLECTIONS_MAX. The default value is DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT, or -2602 mB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::lReflections']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>int lReflections</unmanaged>	
        /// <unmanaged-short>int lReflections</unmanaged-short>	
        public int Reflections;
        
        /// <summary>	
        /// <dd> Delay time of the first reflection relative to the direct path, in seconds, in the range from DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN to DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT. The default value is 0.007 seconds. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flReflectionsDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flReflectionsDelay</unmanaged>	
        /// <unmanaged-short>float flReflectionsDelay</unmanaged-short>	
        public float ReflectionsDelay;
        
        /// <summary>	
        /// <dd> Attenuation of late reverberation relative to lRoom, in mB, in the range -from DSFX_I3DL2REVERB_REVERB_MIN to DSFX_I3DL2REVERB_REVERB_MAX. The default value is DSFX_I3DL2REVERB_REVERB_DEFAULT, or 200 mB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::lReverb']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>int lReverb</unmanaged>	
        /// <unmanaged-short>int lReverb</unmanaged-short>	
        public int Reverb;
        
        /// <summary>	
        /// <dd> Time limit between the early reflections and the late reverberation relative to the time of the first reflection, in seconds, in the range from DSFX_I3DL2REVERB_REVERBDELAY_MIN to DSFX_I3DL2REVERB_REVERBDELAY_MAX. The default value is DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT, or 0.011 seconds. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flReverbDelay']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flReverbDelay</unmanaged>	
        /// <unmanaged-short>float flReverbDelay</unmanaged-short>	
        public float ReverbDelay;
        
        /// <summary>	
        /// <dd> Echo density in the late reverberation decay, in percent, in the range from DSFX_I3DL2REVERB_DIFFUSION_MIN to DSFX_I3DL2REVERB_DIFFUSION_MAX. The default value is DSFX_I3DL2REVERB_DIFFUSION_DEFAULT, or 100.0 percent. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flDiffusion']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flDiffusion</unmanaged>	
        /// <unmanaged-short>float flDiffusion</unmanaged-short>	
        public float Diffusion;
        
        /// <summary>	
        /// <dd> Modal density in the late reverberation decay, in percent, in the range from DSFX_I3DL2REVERB_DENSITY_MIN to DSFX_I3DL2REVERB_DENSITY_MAX. The default value is DSFX_I3DL2REVERB_DENSITY_DEFAULT, or 100.0 percent. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flDensity']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flDensity</unmanaged>	
        /// <unmanaged-short>float flDensity</unmanaged-short>	
        public float Density;
        
        /// <summary>	
        /// <dd> Reference high frequency, in hertz, in the range from DSFX_I3DL2REVERB_HFREFERENCE_MIN to DSFX_I3DL2REVERB_HFREFERENCE_MAX. The default value is DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT, or 5000.0 Hz. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXI3DL2Reverb::flHFReference']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxi3dl2reverb</msdn-id>	
        /// <unmanaged>float flHFReference</unmanaged>	
        /// <unmanaged-short>float flHFReference</unmanaged-short>	
        public float HFReference;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.Listener3DSettings"/> structure describes the 3D world parameters and the position of the listener. This structure is used with theIDirectSound3DListener8::GetAllParametersandIDirectSound3DListener8::SetAllParametersmethods.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
    /// <unmanaged>DS3DLISTENER</unmanaged>	
    /// <unmanaged-short>DS3DLISTENER</unmanaged-short>	
    public  partial class Listener3DSettings {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::vPosition']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>D3DVECTOR vPosition</unmanaged>	
        /// <unmanaged-short>D3DVECTOR vPosition</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawVector3 Position;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::vVelocity']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>D3DVECTOR vVelocity</unmanaged>	
        /// <unmanaged-short>D3DVECTOR vVelocity</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawVector3 Velocity;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::vOrientFront']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>D3DVECTOR vOrientFront</unmanaged>	
        /// <unmanaged-short>D3DVECTOR vOrientFront</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawVector3 OrientFront;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::vOrientTop']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>D3DVECTOR vOrientTop</unmanaged>	
        /// <unmanaged-short>D3DVECTOR vOrientTop</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawVector3 OrientTop;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::flDistanceFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>float flDistanceFactor</unmanaged>	
        /// <unmanaged-short>float flDistanceFactor</unmanaged-short>	
        public float DistanceFactor;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::flRolloffFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>float flRolloffFactor</unmanaged>	
        /// <unmanaged-short>float flRolloffFactor</unmanaged-short>	
        public float RolloffFactor;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DS3DLISTENER::flDopplerFactor']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.ds3dlistener</msdn-id>	
        /// <unmanaged>float flDopplerFactor</unmanaged>	
        /// <unmanaged-short>float flDopplerFactor</unmanaged-short>	
        public float DopplerFactor;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public SharpDX.Mathematics.Interop.RawVector3 Position;
            public SharpDX.Mathematics.Interop.RawVector3 Velocity;
            public SharpDX.Mathematics.Interop.RawVector3 OrientFront;
            public SharpDX.Mathematics.Interop.RawVector3 OrientTop;
            public float DistanceFactor;
            public float RolloffFactor;
            public float DopplerFactor;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Position = @ref.Position;
            this.Velocity = @ref.Velocity;
            this.OrientFront = @ref.OrientFront;
            this.OrientTop = @ref.OrientTop;
            this.DistanceFactor = @ref.DistanceFactor;
            this.RolloffFactor = @ref.RolloffFactor;
            this.DopplerFactor = @ref.DopplerFactor;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Position = this.Position;
            @ref.Velocity = this.Velocity;
            @ref.OrientFront = this.OrientFront;
            @ref.OrientTop = this.OrientTop;
            @ref.DistanceFactor = this.DistanceFactor;
            @ref.RolloffFactor = this.RolloffFactor;
            @ref.DopplerFactor = this.DopplerFactor;
		
		}
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.NoiseSuppressSettings"/> structure contains parameters for noise suppression in a capture buffer.	
    /// </summary>	
    /// <remarks>	
    /// <table><tr><th>Windows </th></tr><tr><td><p>Important Note for Windows Vista</p> <p>Existing applications that access Windows XP Acoustic Echo Cancellation (AEC) features via the DirectSound API will no longer obtain AEC when running on Windows Vista. These applications will still run, but their calls to AEC-specific DirectSound API calls will have no effect on the captured audio.</p><p>To learn how to obtain AEC in Windows Vista, See the Windows Vista AEC topics in the Windows SDK.</p></td></tr></table>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCFXNoiseSuppress']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dscfxnoisesuppress</msdn-id>	
    /// <unmanaged>DSCFXNoiseSuppress</unmanaged>	
    /// <unmanaged-short>DSCFXNoiseSuppress</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct NoiseSuppressSettings {	
        
        /// <summary>	
        /// <dd> Boolean value that specifies whether the effect is enabled. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSCFXNoiseSuppress::fEnable']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dscfxnoisesuppress</msdn-id>	
        /// <unmanaged>BOOL fEnable</unmanaged>	
        /// <unmanaged-short>BOOL fEnable</unmanaged-short>	
        public SharpDX.Mathematics.Interop.RawBool Enable;
    }
    
    /// <summary>	
    /// No documentation.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBPOSITIONNOTIFY']/*"/>	
    /// <unmanaged>DSBPOSITIONNOTIFY</unmanaged>	
    /// <unmanaged-short>DSBPOSITIONNOTIFY</unmanaged-short>	
    public  partial class NotificationPosition {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBPOSITIONNOTIFY::dwOffset']/*"/>	
        /// <unmanaged>unsigned int dwOffset</unmanaged>	
        /// <unmanaged-short>unsigned int dwOffset</unmanaged-short>	
        public int Offset;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBPOSITIONNOTIFY::hEventNotify']/*"/>	
        /// <unmanaged>void* hEventNotify</unmanaged>	
        /// <unmanaged-short>void hEventNotify</unmanaged-short>	
        internal System.IntPtr EventNotifyHandlerPointer;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.ParametricEqualizerSettings"/> structure contains parameters for a parametric equalizer effect.	
    /// </summary>	
    /// <remarks>	
    /// <p>The value in fCenter cannot exceed one-third of the sampling frequency of the buffer. If an attempt is made to set a value greater than this, but within the range of accepted values, the parameter is set to the nearest supported value and S_FALSE is returned by IDirectSoundFXParamEq8::SetAllParameters.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXParamEq']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>	
    /// <unmanaged>DSFXParamEq</unmanaged>	
    /// <unmanaged-short>DSFXParamEq</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct ParametricEqualizerSettings {	
        
        /// <summary>	
        /// <dd> Center frequency, in hertz, in the range from DSFXPARAMEQ_CENTER_MIN to DSFXPARAMEQ_CENTER_MAX. The default value is 8000. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXParamEq::fCenter']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>	
        /// <unmanaged>float fCenter</unmanaged>	
        /// <unmanaged-short>float fCenter</unmanaged-short>	
        public float Center;
        
        /// <summary>	
        /// <dd> Bandwidth, in semitones, in the range from DSFXPARAMEQ_BANDWIDTH_MIN to DSFXPARAMEQ_BANDWIDTH_MAX. The default value is 12. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXParamEq::fBandwidth']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>	
        /// <unmanaged>float fBandwidth</unmanaged>	
        /// <unmanaged-short>float fBandwidth</unmanaged-short>	
        public float Bandwidth;
        
        /// <summary>	
        /// <dd> Gain, in the range from DSFXPARAMEQ_GAIN_MIN to DSFXPARAMEQ_GAIN_MAX. The default value is 0. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXParamEq::fGain']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxparameq</msdn-id>	
        /// <unmanaged>float fGain</unmanaged>	
        /// <unmanaged-short>float fGain</unmanaged-short>	
        public float Gain;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.SoundBufferDescription"/> structure describes the characteristics of a new buffer object. It is used by theIDirectSound8::CreateSoundBuffermethod and by theDirectSoundFullDuplexCreate8function.<p>An earlier version of this structure, DSBUFFERDESC1, is maintained in Dsound.h for compatibility with DirectX 7 and earlier.</p>	
    /// </summary>	
    /// <remarks>	
    /// <p>When creating a primary buffer, applications must set the dwBufferBytes member to zero. DirectSound will determine the best buffer size for the particular sound device in use. To determine the size of a created primary buffer, call IDirectSoundBuffer8::GetCaps.</p> <p>The DSBCAPS_CTRLDEFAULT flag is no longer supported. This flag was defined as <see cref="SharpDX.DirectSound.BufferFlags.ControlPan"/> | <see cref="SharpDX.DirectSound.BufferFlags.ControlVolume"/> | <see cref="SharpDX.DirectSound.BufferFlags.ControlFrequency"/>. By specifying only the flags you need, you cut down on unnecessary resource usage.</p> <p>On VXD drivers, a sound buffer created with <see cref="SharpDX.DirectSound.BufferFlags.ControlPositionNotify"/> is always a software buffer, because the VXD driver model does not support notifications. With WDM drivers, a notification-enabled buffer can be in hardware, if hardware resources are available.</p> <p>The <see cref="SharpDX.DirectSound.BufferFlags.Hardware"/> and <see cref="SharpDX.DirectSound.BufferFlags.Software"/> flags are optional and mutually exclusive. <see cref="SharpDX.DirectSound.BufferFlags.Hardware"/> forces the buffer to reside in hardware, meaning that it will be mixed by the sound card. <see cref="SharpDX.DirectSound.BufferFlags.Software"/> forces the buffer to reside in software, where it is mixed by the CPU. These flags are also defined for the dwFlags member <see cref="SharpDX.DirectSound.BufferCapabilities"/>.</p> <p>The 3D algorithms represent selection of the software emulation layer only: that is, the software algorithm that is used when no hardware is present for acceleration. In order to maximize hardware utilization, <see cref="SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm"/> is treated as a special case. If no free 3D hardware voices are available, the buffer is then treated as a 2D buffer, but with 3D control. Specifically, when a sound buffer is created with <see cref="SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm"/>, or when the buffer is played if the buffer was created with DSBPLAY_LOCDEFER, the following procedure is followed:</p> <ol> <li><p>If a free hardware 3D voice is available, that 3D hardware voice is used.</p></li> <li><p>If no free hardware 3D voices are available and a 2D hardware voice is available, that 2D hardware voice will be used. This is possible because the <see cref="SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm"/> algorithm is a simple stereo pan algorithm</p></li> <li><p>If no free 2D or 3D hardware voices are available, the voice will be played in software using the <see cref="SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm"/> algorithm.</p></li> </ol> <p>If a speaker configuration other than <see cref="SharpDX.DirectSound.SpeakerConfiguration.Headphone"/> or <see cref="SharpDX.DirectSound.SpeakerConfiguration.Stereo"/> is in effect, the processing will be done as if for a two-speaker configuration.</p> <p>If a buffer is created using one of the HRTF algorithms, and the HRTF algorithm is not available on the system (for example, a non-WDM system), a success code, DS_NO_VIRTUALIZATION, is returned. The sound buffer created will use <see cref="SharpDX.DirectSound.DirectSound3DAlgorithmGuid.NoVirtualization3DAlgorithm"/> instead. For this reason, applications should use the SUCCEEDED or FAILED macros rather than checking explicitly for DS_OK when calling CreateSoundBuffer.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBUFFERDESC']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>	
    /// <unmanaged>DSBUFFERDESC</unmanaged>	
    /// <unmanaged-short>DSBUFFERDESC</unmanaged-short>	
    public  partial class SoundBufferDescription {	
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBUFFERDESC::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBUFFERDESC::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>	
        /// <unmanaged>DSBCAPS_FLAGS dwFlags</unmanaged>	
        /// <unmanaged-short>DSBCAPS_FLAGS dwFlags</unmanaged-short>	
        public SharpDX.DirectSound.BufferFlags Flags;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBUFFERDESC::dwBufferBytes']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>	
        /// <unmanaged>unsigned int dwBufferBytes</unmanaged>	
        /// <unmanaged-short>unsigned int dwBufferBytes</unmanaged-short>	
        public int BufferBytes;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBUFFERDESC::dwReserved']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>	
        /// <unmanaged>unsigned int dwReserved</unmanaged>	
        /// <unmanaged-short>unsigned int dwReserved</unmanaged-short>	
        internal int Reserved;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBUFFERDESC::lpwfxFormat']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>	
        /// <unmanaged>WAVEFORMATEX* lpwfxFormat</unmanaged>	
        /// <unmanaged-short>WAVEFORMATEX lpwfxFormat</unmanaged-short>	
        internal System.IntPtr pFormat;
        
        /// <summary>	
        /// No documentation.	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSBUFFERDESC::guid3DAlgorithm']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsbufferdesc</msdn-id>	
        /// <unmanaged>GUID guid3DAlgorithm</unmanaged>	
        /// <unmanaged-short>GUID guid3DAlgorithm</unmanaged-short>	
        public System.Guid AlgorithmFor3D;
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.SoundBufferEffectDescription"/> structure describes an effect associated with a buffer.	
    /// </summary>	
    /// <remarks>	
    /// <p>Custom effects can be implemented as DMOs. Effect DMOs must implement the <see cref="SharpDX.MediaFoundation.IMediaObject"/> and <see cref="SharpDX.MediaFoundation.IMediaObjectInPlace"/> interfaces.</p> <p>If dwFlags is zero, the effect is placed in hardware if possible. If the hardware does not support the effect (always the case since DirectX 9.0), software is used. If the effect is not available at all, the call to SetFX fails.</p>	
    /// </remarks>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSEFFECTDESC']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dseffectdesc</msdn-id>	
    /// <unmanaged>DSEFFECTDESC</unmanaged>	
    /// <unmanaged-short>DSEFFECTDESC</unmanaged-short>	
    internal  partial class SoundBufferEffectDescription {	
        
        /// <summary>	
        /// <dd> Size of the structure, in bytes. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSEFFECTDESC::dwSize']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dseffectdesc</msdn-id>	
        /// <unmanaged>unsigned int dwSize</unmanaged>	
        /// <unmanaged-short>unsigned int dwSize</unmanaged-short>	
        internal int Size;
        
        /// <summary>	
        /// <dd> Flags. Can be zero or one of the following values. <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td>DSFX_LOCHARDWARE	
        /// </td><td>Effect must be in hardware. If the effect is not available in hardware, <see cref="SharpDX.DirectSound.SecondarySoundBuffer.SetEffect"/> raises an error. Since DirectX 9.0, DirectX does not support hardware acceleration of effects, so this flag should not be used.	
        /// </td></tr> <tr><td>DSFX_LOCSOFTWARE	
        /// </td><td>Effect must be in software, even if the hardware supports acceleration of guidDSFXClass. If the effect is not available in software, SetFX raises an error. Since DirectX 9.0, all effects are in software regardless of whether this flag is set.	
        /// </td></tr> </table> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSEFFECTDESC::dwFlags']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dseffectdesc</msdn-id>	
        /// <unmanaged>unsigned int dwFlags</unmanaged>	
        /// <unmanaged-short>unsigned int dwFlags</unmanaged-short>	
        public int Flags;
        
        /// <summary>	
        /// <dd> Class identifier of the effect. The following standard effect classes are defined. <table> <tr><th>Value	
        /// </th><th>Description	
        /// </th></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardChorus"/>	
        /// </td><td>Chorus	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardCompressor"/>	
        /// </td><td>Compressor	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardDistortion"/>	
        /// </td><td>Distortion	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardEcho"/>	
        /// </td><td>Echo	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardFlanger"/>	
        /// </td><td>Flanger	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardGargle"/>	
        /// </td><td>Gargle	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardI3DL2REVERB"/>	
        /// </td><td>Interactive 3D Level 2 reverb	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.StandardParameq"/>	
        /// </td><td>Parametric equalizer	
        /// </td></tr> <tr><td><see cref="SharpDX.DirectSound.SoundEffectGuid.WavesReverb"/>	
        /// </td><td>Waves reverb	
        /// </td></tr> </table> </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSEFFECTDESC::guidDSFXClass']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dseffectdesc</msdn-id>	
        /// <unmanaged>GUID guidDSFXClass</unmanaged>	
        /// <unmanaged-short>GUID guidDSFXClass</unmanaged-short>	
        public System.Guid idDSFXClass;
        
        /// <summary>	
        /// <dd> Reserved for future use. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSEFFECTDESC::dwReserved1']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dseffectdesc</msdn-id>	
        /// <unmanaged>ULONG_PTR dwReserved1</unmanaged>	
        /// <unmanaged-short>ULONG_PTR dwReserved1</unmanaged-short>	
        internal System.IntPtr Reserved1;
        
        /// <summary>	
        /// <dd> Reserved for future use. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSEFFECTDESC::dwReserved2']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dseffectdesc</msdn-id>	
        /// <unmanaged>ULONG_PTR dwReserved2</unmanaged>	
        /// <unmanaged-short>ULONG_PTR dwReserved2</unmanaged-short>	
        internal System.IntPtr Reserved2;

        // Internal native struct used for marshalling
        [StructLayout(LayoutKind.Sequential)]
        internal partial struct __Native {	
            public int Size;
            public int Flags;
            public System.Guid idDSFXClass;
            public System.IntPtr Reserved1;
            public System.IntPtr Reserved2;
		    // Method to free unmanaged allocation
            internal unsafe void __MarshalFree()
            {   
            }
        }
		
		// Method to free unmanaged allocation
        internal unsafe void __MarshalFree(ref __Native @ref)
        {   
            @ref.__MarshalFree();
        }
		
		// Method to marshal from native to managed struct
        internal unsafe void __MarshalFrom(ref __Native @ref)
        {            
            this.Size = @ref.Size;
            this.Flags = @ref.Flags;
            this.idDSFXClass = @ref.idDSFXClass;
            this.Reserved1 = @ref.Reserved1;
            this.Reserved2 = @ref.Reserved2;
        }
        // Method to marshal from managed struct tot native
        internal unsafe void __MarshalTo(ref __Native @ref)
        {
            @ref.Size = this.Size;
            @ref.Flags = this.Flags;
            @ref.idDSFXClass = this.idDSFXClass;
            @ref.Reserved1 = this.Reserved1;
            @ref.Reserved2 = this.Reserved2;
		
		}
    }
    
    /// <summary>	
    /// The <see cref="SharpDX.DirectSound.WavesReverbSettings"/> structure contains parameters for a Waves reverberation effect.	
    /// </summary>	
    /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXWavesReverb']/*"/>	
    /// <msdn-id>microsoft.directx_sdk.reference.dsfxwavesreverb</msdn-id>	
    /// <unmanaged>DSFXWavesReverb</unmanaged>	
    /// <unmanaged-short>DSFXWavesReverb</unmanaged-short>	
    [StructLayout(LayoutKind.Sequential)]
    public  partial struct WavesReverbSettings {	
        
        /// <summary>	
        /// <dd> Input gain of signal, in decibels (dB), in the range from DSFX_WAVESREVERB_INGAIN_MIN through DSFX_WAVESREVERB_INGAIN_MAX. The default value is DSFX_WAVESREVERB_INGAIN_DEFAULT, or 0 dB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXWavesReverb::fInGain']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxwavesreverb</msdn-id>	
        /// <unmanaged>float fInGain</unmanaged>	
        /// <unmanaged-short>float fInGain</unmanaged-short>	
        public float InGain;
        
        /// <summary>	
        /// <dd> Reverb mix, in dB, in the range from DSFX_WAVESREVERB_REVERBMIX_MIN through DSFX_WAVESREVERB_REVERBMIX_MAX. The default value is DSFX_WAVESREVERB_REVERBMIX_DEFAULT, or 0 dB. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXWavesReverb::fReverbMix']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxwavesreverb</msdn-id>	
        /// <unmanaged>float fReverbMix</unmanaged>	
        /// <unmanaged-short>float fReverbMix</unmanaged-short>	
        public float ReverbMix;
        
        /// <summary>	
        /// <dd> Reverb time, in milliseconds, in the range from DSFX_WAVESREVERB_REVERBTIME_MIN through DSFX_WAVESREVERB_REVERBTIME_MAX. The default value is DSFX_WAVESREVERB_REVERBTIME_DEFAULT, or 1000. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXWavesReverb::fReverbTime']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxwavesreverb</msdn-id>	
        /// <unmanaged>float fReverbTime</unmanaged>	
        /// <unmanaged-short>float fReverbTime</unmanaged-short>	
        public float ReverbTime;
        
        /// <summary>	
        /// <dd> High-frequency reverb time ratio, in the range from DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN through DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX. The default value is DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT, or 0.001. </dd>	
        /// </summary>	
        /// <include file='.\..\Documentation\CodeComments.xml' path="/comments/comment[@id='DSFXWavesReverb::fHighFreqRTRatio']/*"/>	
        /// <msdn-id>microsoft.directx_sdk.reference.dsfxwavesreverb</msdn-id>	
        /// <unmanaged>float fHighFreqRTRatio</unmanaged>	
        /// <unmanaged-short>float fHighFreqRTRatio</unmanaged-short>	
        public float HighFreqRTRatio;
    }
}
